Digital processing or computing systems in which input/output devices are utilized for entering data into the processing system and for retrieving data generated by the processing system typically utilize data buffers for data being supplied to or received from the I/O device. In those processing systems in which the I/O device is a magnetic tape device, it is necessary for the buffer to supply data at a data transfer rate compatible with that of the recording rate of the magnetic tape device. Because there are various other I/O devices requesting data from the processor and because the data transfer rate of the processor is greater than the drive rate of the magnetic tape device, buffering of the data is necessary.
Previously developed I/O device buffering schemes have utilized fixed length buffer storage devices, such as first-in first-out (FIFO) buffer storage and dual FIFO storage buffers referred to as a "Ping-Pong" buffer. A further buffering scheme is described in U.S. Pat. No. 4,125,870 issued to Suzuki et al. on Nov. 14, 1978 and entitled "Information Transfer Control System." These previously developed approaches using fixed length FIFO buffer storage introduce a fixed time delay in the data stream being transferred from the processor to the I/O device.
An additional problem observed with previously developed data buffering devices is that such buffers must be initially full prior to a write command to the I/O device. This condition is necessary to insure that the I/O device will not exhaust the amount of data being transferred after beginning the write operation. The amount of data needed to be held in a data buffer at the start of the write operation varies with the application of the processing system. However, for fixed buffer arrangements it is typically necessary to fill the entire buffer even though the I/O device may not require this amount of data to begin the write operation.
A need has thus arisen for a data buffer to minimize the buffer filling delays and I/O device start/stop delays for various different I/O device unit applications and system conditions. Such a data buffer must be dynamically adjustable to overcome the problems associated with fixed length buffers.
In accordance with the present invention, a variable capacity data buffer is provided for buffering data being transferred to or received from a processor and an I/O device. The buffer size or capacity is dynamically adjustable to minimize buffer filling delays and I/O device start/stop delays and yet provide adequate buffering for various applications and system conditions.
In accordance with the present invention, a data buffer is provided for controlling the transfer of data between a processor, wherein the processor generates command signals, and an input/output device. The data buffer includes a data storage device having a maximum data storage capacity value. The data storage device is disposed between the processor and the input/output device for receiving data input from the processor and for outputting data to the input/output device. The data storage device thereby transfers data from the processor to the input/output device and temporarily stores a predetermined amount of data while simultaneously transferring data between the processor and the input/output device. Logic circuitry is provided for selectively establishing a threshold storage capacity value of the data storage device wherein the threshold storage capacity value is less than the maximum data storage capacity value. Logic circuitry is further provided for maintaining the predetermined amount of data temporarily stored in the data storage device equal to the threshold storage capacity value while the data storage device receives data from the processor and outputs data to the input/output device.
In accordance with another aspect of the present invention, a method of transferring data from a processor to an input/output device includes the step of inputting data from the processor into a data storage device having a maximum data storage capacity. The amount of data input into the data storage device is controlled to a threshold value less than the maximum data storage capacity of the data storage device. A predetermined amount of data is stored within the data storage device. Data is then output from the data storage device while continuously maintaining the predetermined amount of data within the data storage device.